﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
[assembly: WebResource("Utilities.MessageBox.js", "application/x-javascript")]
namespace Utilities
{
    /// <summary>
    /// 在网页中弹出对话框或添加脚本
    /// </summary>
    public class MessageBox
    {
        /// <summary>
        /// 弹出自定义的有换行情况或者信息量大的提示信息，alert实现，不会自动隐藏（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control">执行弹出对话框的位置（可传this）</param>
        /// <param name="msg">弹出消息</param>
        public static void Show(System.Web.UI.Control control, string msg)
        {
            LiteralControl lc = new LiteralControl();
            lc.Text = "<script type=\"text/javascript\">alert(\"" + msg + "\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出自定义的没有换行且信息量不很多的提示信息，js实现，会自动隐藏.（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control">执行执行弹出对话框的位置（可传this）</param>
        /// <param name="msg">弹出消息</param>
        public static void ShowInfo(System.Web.UI.Control control, string msg)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(1,\"" + msg + "\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出用户操作成功的自定义反馈信息，js实现，会自动隐藏
        /// </summary>
        /// <param name="control">执行弹出对话框的位置（可传this）</param>
        /// <param name="msg">弹出消息</param>
        public static void ShowSuccess(System.Web.UI.Control control,string msg)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(0,\"" + msg + "\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出用户操作失败的自定义反馈信息，js实现，会自动隐藏
        /// </summary>
        /// <param name="control">执行弹出对话框的位置（可传this）</param>
        /// <param name="msg">弹出消息</param>
        public static void ShowError(System.Web.UI.Control control, string msg)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(2,\"" + msg + "\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出”已保存！“对话框，自动隐藏.如果想自定义弹出信息，请使用ShowSuccess方法（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control">执行弹出对话框的位置（可传this）</param>
        public static void ShowSaveSuccess(System.Web.UI.Control control)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            //lc.Text = "<script type=\"text/javascript\">alert(\"已保存！\")</script>";
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(0,\"保存成功！\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出”保存失败，请稍后重试！“对话框，自动隐藏.如果想自定义弹出信息，请使用ShowError方法（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control">执行弹出对话框的位置（可传this）</param>
        public static void ShowSaveError(System.Web.UI.Control control)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            //lc.Text = "<script type=\"text/javascript\">alert(\"保存失败，请稍后重试！\")</script>";
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(2,\"保存失败，请稍后重试！\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出”已更新！“对话框，自动隐藏.如果想自定义弹出信息，请使用ShowSuccess方法（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control"></param>
        public static void ShowUpdateSuccess(System.Web.UI.Control control)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            //lc.Text = "<script type=\"text/javascript\">alert(\"已更新！\")</script>";
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(0,\"修改成功！\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出”更新失败，请稍后重试！“对话框，自动隐藏.如果想自定义弹出信息，请使用ShowError方法（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control"></param>
        public static void ShowUpdateError(System.Web.UI.Control control)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            //lc.Text = "<script type=\"text/javascript\">alert(\"更新失败，请稍后重试！\")</script>";
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(2,\"修改失败，请稍后重试！\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出”已删除！“对话框，自动隐藏.如果想自定义弹出信息，请使用ShowSuccess方法（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control">执行弹出对话框的位置（可传this）</param>
        public static void ShowDeleteSuccess(System.Web.UI.Control control)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            //lc.Text = "<script type=\"text/javascript\">alert(\"已删除！\")</script>";
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(0,\"删除成功！\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 弹出”删除失败，请稍后重试！“对话框，自动隐藏.如果想自定义弹出信息，请使用ShowError方法（不能在Page_Load里使用）
        /// </summary>
        /// <param name="control">执行弹出对话框的位置（可传this）</param>
        public static void ShowDeleteError(System.Web.UI.Control control)
        {
            IncludeJavascript(control.Page);
            LiteralControl lc = new LiteralControl();
            //lc.Text = "<script type=\"text/javascript\">alert(\"删除失败，请稍后重试！\")</script>";
            lc.Text = "<script type=\"text/javascript\">MessageBox.Show(2,\"删除失败，请稍后重试！\")</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 在文档末尾加一个脚本块（不能在Page_Load里使用，在文档加载完成后给出提示）
        /// </summary>
        /// <param name="control">要添加脚本块位置（可传this）</param>
        /// <param name="script">脚本内容</param>
        public static void AppendScript(System.Web.UI.Control control, string script)
        {
            LiteralControl lc = new LiteralControl();
            lc.Text = "<script type=\"text/javascript\">" + script + "</script>";
            control.Controls.Add(lc);
        }
        /// <summary>
        /// 直接在文档头部中写入一段脚本（可在Page_Load里使用,适合提示后就立跳转页面）
        /// </summary>
        /// <param name="page">Page对象，传this即可</param>
        /// <param name="script"></param>
        public static void WriteScript(System.Web.UI.Page page, string script)
        {
            page.Response.Write("<script type=\"text/javascript\">");
            page.Response.Write(script);
            page.Response.Write(";</script>");
        }
        /// <summary>
        /// 向前台页面添加一个js引用
        /// </summary>
        /// <param name="page"></param>
        private static void IncludeJavascript(System.Web.UI.Page page)
        {
            page.ClientScript.RegisterClientScriptResource(typeof(MessageBox), "Utilities.MessageBox.js");
        }
    }
}
